import pandas as pd
from datetime import datetime
import re

# 读取 Excel 文件
excel_file = 'E:\pythonProject\python\python\com\zsw\设备型号.xlsx'  # 你的 Excel 文件路径
df = pd.read_excel(excel_file)


# 处理数据
def parse_device_data(row):
    # 设备型号和品牌拆分
    if isinstance(row['设备型号'], str):
        brand_model = row['设备型号'].split(" ", 1)  # 以空格为分隔符拆分品牌和型号
        if len(brand_model) == 2:
            brand, model = brand_model
        else:
            brand, model = brand_model[0], ''  # 如果没有空格，设备型号就视为品牌名
    else:
        brand, model = '', ''  # 如果设备型号为空，品牌和型号都为空

    # 处理日期格式（上市时间）
    def parse_date(date_str):
        if date_str in ['未知', '未知的日期']:
            return None

        date_str = str(date_str).strip()  # 去除可能的空格

        # 处理"YYYY年"格式，例如 "2020年"
        if len(date_str) == 5 and date_str.endswith('年') and date_str[:-1].isdigit():
            return datetime.strptime(date_str[:-1] + '-01-01', '%Y-%m-%d').date()

        # 去掉"年"、"月"、"日"字符，并确保没有多余的"-"
        date_str = re.sub(r'[^\d]', '-', date_str)  # 替换非数字字符为"-"

        # 如果末尾有"-"就去掉
        if date_str.endswith('-'):
            date_str = date_str[:-1]

        # 处理只有年份的情况，例如“2020”
        if len(date_str) == 4 and date_str.isdigit():
            return datetime.strptime(date_str + '-01-01', '%Y-%m-%d').date()

        # 处理只有年月的情况，例如“2020年03月”
        if len(date_str) >= 7 and '年' in date_str and '月' in date_str:
            return datetime.strptime(date_str.replace('年', '-').replace('月', '-01'), '%Y-%m-%d').date()

        # 尝试解析完整日期，例如“2020年03月21日”
        try:
            return datetime.strptime(date_str, '%Y-%m-%d').date()
        except ValueError:
            return None

    # 将上市时间转换为日期格式
    launch_date = parse_date(row['上市时间'])

    return pd.Series([brand, model, launch_date])


# 应用数据处理
df[['device_brand', 'device_model', 'launch_date']] = df.apply(parse_device_data, axis=1)

# 清理数据: 只保留需要的字段
df = df[['device_brand', 'device_model', 'launch_date']]

# 保存为 CSV 文件
csv_file = 'processed_device_data.csv'
df.to_csv(csv_file, index=False, encoding='utf-8')

print(f"CSV 文件已生成：{csv_file}")